<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="../rurple.css" type="text/css" />

<title>repeat() bazı Python komutlarını gizler</title>
</head>
<body>
<h2 class="title">33. repeat() bazı Python komutlarını gizler</h2>

<p>Pek çok ders önce Reeborg'a bazı işleri nasıl tekrar ettirdiğimizi 
hatırlayın. </p>

<pre>
<span class="keyword">def</span> turn_right():
    repeat(turn_left, 3)
</pre>

<p>Bu derste kendi
<tt>repeat()</tt>fonksiyonumuzu nasıl tanımlayacağımızı göreceğiz.</p>

<!--==============================-->
<hr class="line" />

<h3 class="section">İki yeni komut</h3>

<p>Aşağıdakini deneyin:</p>

<pre>
>>> <span class="keyword">for</span> letter <span class=
"keyword">in</span> <span class="string">"Reeborg"</span>:
...     <span class="keyword">print</span> letter
...     
R
e
e
b
o
r
g
</pre>

<p><span class="string">Reeborg </span>kelimesindeki tüm harflerin tek tek yeni 
bir satırda yazılmasını Pyton'a söylemiş olduk. Eğer harflerin her birinin yeni 
bir satırda görüntülenmesini istemezsek virgül kullanırız.</p>

<pre>
>>> <span class="keyword">for</span> letter <span class=
"keyword">in</span> <span class="string">"Reeborg"</span>:
...     <span class="keyword">print</span> letter,
...     
R e e b o r g
</pre>

<p>Oldukça düzenli! Bu herhangi bir string ile çalışır! Bunun yerine Python'un 
sayıları saymasını isteseydik? <span class=
"pykeyword">for</span> döngüsünü
<tt>range() </tt>fonksiyonu ile birlikte kullanabiliriz.</p>

<pre>
>>> <span class="keyword">for</span> number <span class=
"keyword">in</span> range(3):
...     <span class="keyword">print</span> number
...     
0
1
2
>>> <span class="keyword">for</span> number <span class=
"keyword">in</span> range(14):
...     <span class="keyword">print</span> number,
...    
0 1 2 3 4 5 6 7 8 9 10 11 12 13
</pre>

<p>Kendi kendinize benzer örnekleri deneyin!</p>

<!--==============================-->
<hr class="line" />

<h3 class="section"><tt>repeat()</tt>'in tanımlanması </h3>

<p>Artık kendi
<tt>repeat()</tt>fonksiyonumuzu tanımlamak için gerekli malzemeye sahibiz:.</p>

<ul>
<li>Parametre kullanarak fonksiyon tanımlamayı biliyoruz.</li>
<li>Değişkenlerin nasıl kullanılacağını biliyoruz.</li>
<li> <span class="pykeyword">for</span> döngüleri ile nasıl sayı sayılacağını 
biliyoruz.</li>
</ul>

<p>Neden bekliyoruz ki?</p>

<pre>
>>> <span class="keyword">def</span> repeat(f, n):
...     <span class="keyword">for</span> i <span class=
"keyword">in</span> range(n):
...         f()
...
>>> <span class="keyword">def</span> f():
...     <span class="keyword">print</span> <span class=
"string">"It's fun!"</span>
...    
>>> repeat(f, 3)
It's fun!
It's fun!
It's fun!
</pre>

<p>Aslında bu yaptığımız oldukça gelişmiş bir düzeyde Python programlamadır.
<tt>repeat()</tt> fonksiyonuna kendiside bir fonksiyon olan bir parametre 
gönderdik. Bunu yapabilmek için fonksiyonun adından sonra parantez 
kullanmamalıyız. [Geriye dönün ve <tt>turn_right()</tt>'ı Reeborg'un dünyasında 
nasıl tanımladığımıza bir bakın.] Bunun yanında sayısal bir değer alan başka bir 
parametre (<tt>n</tt>) daha gönderdik.
<tt>repeat()</tt>fonksiyonu tanımlandığında parametrelerden birisinin bir 
fonksiyon, diğerinin bir sayı olacağını Python dikkate almaz (ve bilmez de!). </p>

<p>Seçtiğim değişken isimlerinin (<tt>f, n, i</tt>) çok açıklayıcı olmadığına 
dikkat edin. Programcılar küçük döngülerde (az önceki gibi) veya küçük 
fonksiyonlarda tek harfli değişkenler kullanırlar böylece değişkenlerin 
kullanıldıkları yerler çok daha kolaylıkla görülebilir. Ancak değişkenlerin özel 
bir anlamı varsa onlara daha uzun ve açıklayıcı adlar vermek tercih edilir. Eğer 
buna inanmıyorsanız, <a href=
"../intro/10-def.htm">10. Tekrardan kesinlikle kaçının.</a>dersine gidin ve 
dersin sonundaki Program okuma kısmını yeniden deneyin. </p>

<p>Belki de <tt>repeat()</tt> fonksiyonunu aşağıdaki gibi tanımlamalıydım:</p>

<pre>
<span class="keyword">def</span> repeat(function, number_of_times):
    <span class="keyword">for</span> number <span class="keyword">in</span> range(number_of_times):
        function()
</pre>

<!--==============================-->
<hr class="line" />

<h3 class="try">Deneyin!</h3>

<p>Reeborg'un dünyasına gidin. İçinde <tt>repeat()</tt>'in en az iki kez 
kullanılmış olduğu herhangi bir alıştırmayı seçin. <tt>repeat()</tt>lerin yerine <span class=
"pykeyword">for</span> döngüleri kullanarak çözüme ulaşın.</p>

<div class="lessons_nav">
<a href="32-return.htm"><img alt="previous" src=
"../../images/previous.png" />Many returns</a> - <a href=
"../lessons_toc.htm"><img alt="home" src="../../images/home.png" /></a> - 
<a href="34-lists.htm">Çukulatalı kek tarifi </a> <a href=
"34-lists.htm"><img alt="next"
src="../../images/next.png" /></a>
</div>
</body>
</html>
